Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Розрахункова робота ТА

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКНІ
Факультет:
Комп’ютерні науки
Кафедра:
АСУ

Інформація про роботу

Рік:
2013
Тип роботи:
Розрахункова робота
Предмет:
Теорiя алгоритмiв i математичнi основи представленння знань
Група:
КН 2
Варіант:
5

Частина тексту файла

Міністерство освіти та науки України Національний університет «Львівська політехніка»  Розрахункова робота З теорії алгоритмів Варіант №5 Завдання: Знайдіть у цьому лабіринті такий маршрут, щоб сума всіх “зібраних” на перехрестях чисел дорівнювала 40. Через кожне перехрестя можна проходити лише один раз.  Алгоритм: Створюємо копію початкового масиву, з якою і будемо працювати Перевіряємо чи сума цифр більша ніж задана. Якщо більша, то завершуємо програму (щлях вибрано не правильно) Якщо менше, то додаємо поточний елемент і відмічаємо пройдений елемент. Перевіряємо чи поточна клітинка є останньою і сума така як задана Якщо так, то виводимо увесь відмічений шлях і завершуємо програму. Якщо ні, то переходимо до іншого перехрестя і йдемо на крок 2 Текст програми: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <locale.h> #define MAXX 5 #define MAXY 7 #define STARTX 3 #define STARTY 1 #define FINX 0 #define FINY 5 #define FINSUM 40 // тут зберігається граф int aa[MAXX][MAXY] = { // 0 1 2 3 4 5 6 /*0*/ {-1,-1, 6, 4, 0, 0,-1}, /*1*/ {-1, 1, 9, 0, 6, 9,-1}, /*2*/ { 3, 6, 4, 2, 5, 3, 0}, /*3*/ {-2, 7, 8, 1, 0, 7,-1}, /*4*/ {-1,-1, 0, 6, 3,-1,-1}}; // вивід графа void show_matrix(int a[MAXX][MAXY]) { for(int x=0;x<MAXX;x++) for(int y=0;y<MAXY;y++) { printf( "%2d ", a[x][y] ); if(y==MAXY-1) printf( "\n" ); } } // рекурсивна функція обходу масива void array_walk(int x, int y, int sum, int a[MAXX][MAXY]) { // клонумо масив у newa int newa[MAXX][MAXY]; memcpy(newa, a, sizeof(newa)); // якщо сума вже більша за потрібну, рухатись далі нема змісту if(sum>FINSUM) return; sum+=newa[x][y]; // додаємо до суми поточне значення newa[x][y]=-2; // відмічаємо пройдену клітинку // якщо остання клітинка if((sum==FINSUM)&&(x==FINX)&&(y==FINY)) { printf("\n Sum: %d \n", sum); printf(" Way: \n"); // вивід кінцевої матриці із шляхом, відміченим '-2' show_matrix(a); return; } // визначення можливих клітинок та рух по них if((x<MAXX-1)&&(a[x+1][y]>=0)) array_walk(x+1,y,sum,newa); if((y<MAXY-1)&&(a[x][y+1]>=0)) array_walk(x,y+1,sum,newa); if((x>0)&&(a[x-1][y]>=0)) array_walk(x-1,y,sum,newa); if((y>0)&&(a[x][y-1]>=0)) array_walk(x,y-1,sum,newa); } int main(void) { setlocale(LC_ALL, "Ukrainian"); printf( "\n Input:\n" ); show_matrix(aa); printf( "\n Press Enter...\n" ); getchar(); array_walk(STARTX,STARTY,0,aa); getchar(); return 0; } / /
Антиботан аватар за замовчуванням

24.04.2014 23:04

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини